package com.yuyou.fn.portal.entity;

import com.github.wens.mybatisplus.annotations.TableField;
import com.yuyou.fn.educational.entity.ClassTime;
import org.springframework.data.annotation.Id;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.index.*;
import org.springframework.data.mongodb.core.mapping.Document;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * Created by wens on 2017/4/6.
 */
@Document
@CompoundIndexes({@CompoundIndex(name = "idx_grade_subject" , def = "{'gradeName':1,'subjectName':1}")})
public class OuterCourseClass {

    /**  */
    @Id
    private Long classId;

    /** 班级名称 */
    private String className;


    /** 年级ID */
    private Long gradeId;

    /** 年级名称 */
    @Indexed
    private String gradeName;

    /** 科目ID */
    private Long subjectId;

    /** 科目名称 */
    @Indexed
    private String subjectName;

    /** 课程讲数 */
    private Integer lectureAmount;

    /** 每一讲时长（分钟） */
    private Integer lectureDuration;

    /** 学生名额 */
    private Integer quota;

    /** 学费 */
    private BigDecimal studyingFee;

    /** 资料学费 */
    private BigDecimal materialFee;

    /** 课程介绍 */
    private String courseDescription;

    /** 已报名人数 */
    private Integer regAmount;

    /** 开放报名时间 */
    private Date openRegTime;

    /** 教师ID,多个用逗号隔开 */
    private String teacherIds;

    /** 教师姓名 */
    private String teacherNames;

    /** 班主任ID */
    private Long seniorId;

    /** 班主任Name */
    private String seniorName;


    /** 期ID */
    private Long periodId;

    /** 期名 */
    private String periodName;

    /** 讲次信息 */
    private List<ClassTime> classTimeList;

    /*0-7周日到周六，-1每天*/
    private String timeInterval;

    /** 开课时间 */
    @TableField(value = "start_course_time")
    private Date startCourseTime;

    /** 结课时间 */
    @TableField(value = "end_course_time")
    private Date endCourseTime;


    /** 课程进度 已经结束的讲数 */
    @TableField(value = "course_progress")
    private Integer courseProgress;

    /**  */
    @TableField(value = "area_team_id")
    private Long areaTeamId;

    /**  */
    @TableField(value = "bus_team_id")
    private Long busTeamId;

    /**  */
    @TableField(value = "create_time")
    private Date createTime;

    /**  */
    @TableField(value = "update_time")
    private Date updateTime;

    /** 课程大纲 */
    @TableField(value = "course_outline")
    private String courseOutline;


    /** 班级状态  0:未开班 1:已开班 2：已作废 3：已结课 */
    private Integer status;

    /**
     * 校区地点
     */
    private String campusAddress ;

    private String avatarUrl;

    private Long campusId;

    private String campusName;

    private Long roomId;


    private String roomName;

    /*
    剩余名额
    * */
    private Integer remainingPlaces;


    /*
    年级阶段 //小学“1”，初中“2”，高中“3”
    * */
    private String learningPhase;


    /*上课时间*/
    private String studyingTime;


    /*季节*/
    private String season;

    /*是否周末 0不是，1是*/
    private String isWeek;

    /*所属城市*/
    private String city;

    /**
     * 校区地理位置
     */
    @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2D)
    private Point campusLocation ;

    /*是否热门课程*/
    private Integer isRecommend;


    public String getAvatarUrl() {
        return avatarUrl;
    }

    public void setAvatarUrl(String avatarUrl) {
        this.avatarUrl = avatarUrl;
    }


    public Long getClassId() {
        return classId;
    }

    public void setClassId(Long classId) {
        this.classId = classId;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public Long getGradeId() {
        return gradeId;
    }

    public void setGradeId(Long gradeId) {
        this.gradeId = gradeId;
    }

    public String getGradeName() {
        return gradeName;
    }

    public void setGradeName(String gradeName) {
        this.gradeName = gradeName;
    }

    public Long getSubjectId() {
        return subjectId;
    }

    public void setSubjectId(Long subjectId) {
        this.subjectId = subjectId;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    public Integer getLectureAmount() {
        return lectureAmount;
    }

    public void setLectureAmount(Integer lectureAmount) {
        this.lectureAmount = lectureAmount;
    }

    public Integer getLectureDuration() {
        return lectureDuration;
    }

    public void setLectureDuration(Integer lectureDuration) {
        this.lectureDuration = lectureDuration;
    }

    public Integer getQuota() {
        return quota;
    }

    public void setQuota(Integer quota) {
        this.quota = quota;
    }

    public BigDecimal getStudyingFee() {
        return studyingFee;
    }

    public void setStudyingFee(BigDecimal studyingFee) {
        this.studyingFee = studyingFee;
    }

    public BigDecimal getMaterialFee() {
        return materialFee;
    }

    public void setMaterialFee(BigDecimal materialFee) {
        this.materialFee = materialFee;
    }

    public String getCourseDescription() {
        return courseDescription;
    }

    public void setCourseDescription(String courseDescription) {
        this.courseDescription = courseDescription;
    }

    public Integer getRegAmount() {
        return regAmount;
    }

    public void setRegAmount(Integer regAmount) {
        this.regAmount = regAmount;
    }

    public Date getOpenRegTime() {
        return openRegTime;
    }

    public void setOpenRegTime(Date openRegTime) {
        this.openRegTime = openRegTime;
    }

    public String getTeacherIds() {
        return teacherIds;
    }

    public void setTeacherIds(String teacherIds) {
        this.teacherIds = teacherIds;
    }

    public String getTeacherNames() {
        return teacherNames;
    }

    public void setTeacherNames(String teacherNames) {
        this.teacherNames = teacherNames;
    }

    public Long getSeniorId() {
        return seniorId;
    }

    public void setSeniorId(Long seniorId) {
        this.seniorId = seniorId;
    }

    public String getSeniorName() {
        return seniorName;
    }

    public void setSeniorName(String seniorName) {
        this.seniorName = seniorName;
    }

    public Long getPeriodId() {
        return periodId;
    }

    public void setPeriodId(Long periodId) {
        this.periodId = periodId;
    }

    public String getPeriodName() {
        return periodName;
    }

    public void setPeriodName(String periodName) {
        this.periodName = periodName;
    }

    public Date getStartCourseTime() {
        return startCourseTime;
    }

    public void setStartCourseTime(Date startCourseTime) {
        this.startCourseTime = startCourseTime;
    }

    public Date getEndCourseTime() {
        return endCourseTime;
    }

    public void setEndCourseTime(Date endCourseTime) {
        this.endCourseTime = endCourseTime;
    }

    public Integer getCourseProgress() {
        return courseProgress;
    }

    public void setCourseProgress(Integer courseProgress) {
        this.courseProgress = courseProgress;
    }

    public Long getAreaTeamId() {
        return areaTeamId;
    }

    public void setAreaTeamId(Long areaTeamId) {
        this.areaTeamId = areaTeamId;
    }

    public Long getBusTeamId() {
        return busTeamId;
    }

    public void setBusTeamId(Long busTeamId) {
        this.busTeamId = busTeamId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getCourseOutline() {
        return courseOutline;
    }

    public void setCourseOutline(String courseOutline) {
        this.courseOutline = courseOutline;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getCampusAddress() {
        return campusAddress;
    }

    public void setCampusAddress(String campusAddress) {
        this.campusAddress = campusAddress;
    }

    public Point getCampusLocation() {
        return campusLocation;
    }

    public void setCampusLocation(Point campusLocation) {
        this.campusLocation = campusLocation;
    }

    public List<ClassTime> getClassTimeList() {
        return classTimeList;
    }

    public void setClassTimeList(List<ClassTime> classTimeList) {
        this.classTimeList = classTimeList;
    }

    public String getTimeInterval() {
        return timeInterval;
    }

    public void setTimeInterval(String timeInterval) {
        this.timeInterval = timeInterval;
    }

    public Integer getRemainingPlaces() {
        return remainingPlaces;
    }

    public void setRemainingPlaces(Integer remainingPlaces) {
        this.remainingPlaces = remainingPlaces;
    }

    public String getLearningPhase() {
        return learningPhase;
    }

    public void setLearningPhase(String learningPhase) {
        this.learningPhase = learningPhase;
    }

    public String getSeason() {
        return season;
    }

    public String getStudyingTime() {
        return studyingTime;
    }

    public void setStudyingTime(String studyingTime) {
        this.studyingTime = studyingTime;
    }

    public void setSeason(String season) {
        this.season = season;
    }

    public String getIsWeek() {
        return isWeek;
    }

    public void setIsWeek(String isWeek) {
        this.isWeek = isWeek;
    }




    public Long getCampusId() {
        return campusId;
    }

    public void setCampusId(Long campusId) {
        this.campusId = campusId;
    }

    public Integer getIsRecommend() {
        return isRecommend;
    }

    public void setIsRecommend(Integer isRecommend) {
        this.isRecommend = isRecommend;
    }

    public String getCampusName() {
        return campusName;
    }

    public void setCampusName(String campusName) {
        this.campusName = campusName;
    }

    public Long getRoomId() {
        return roomId;
    }

    public void setRoomId(Long roomId) {
        this.roomId = roomId;
    }

    public String getRoomName() {
        return roomName;
    }

    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}
